package com.sxhuayuan.parking.service;

import java.util.List;

import com.sxhuayuan.parking.compenent.Page;
import com.sxhuayuan.parking.compenent.Pageable;
import com.sxhuayuan.parking.compenent.domain.IdName;
import com.sxhuayuan.parking.config.Platform;
import com.sxhuayuan.parking.entity.Agent;
import com.sxhuayuan.parking.entity.ParkingLot;
import com.sxhuayuan.parking.entity.ParkingLotUser;
import com.sxhuayuan.parking.entity.Salesman;

public interface ParkingLotService extends BaseService<ParkingLot, Long> {

	/** 根据车场标识查询 */
	ParkingLot findBySn(String sn);
	
	ParkingLot findById(Long id);
	
	/**
	 * 车场分页条件查询
	 * 
	 * @param agent
	 */
	Page<ParkingLot> findPage(Pageable pageable, Agent agent);

	/** save */
	void save(ParkingLot parkingLot, Agent agent);

	@Override
	void delete(ParkingLot parkingLot);

	/** 删除代理添加的车场 */
	void deleteByAgent(Long id);

	/** 根据代理查询与其直接相关的车场 */
	List<ParkingLot> findByAgent(Long id);

	void saveList(List<ParkingLot> list);

	/** 获取对应的车场 */
	List<ParkingLot> findList(Agent agent);

	/** 获取停车场选择列表 */
	List<IdName> findSelectOption(Agent agent);

	/** 统计所有车场数量 代理不为空时查询代理底下所有车场 */
	Long countAll(Agent agent);

	/** 更新车场无感各平台的优先级别 */
	void updatePartnersWeight(ParkingLot lot, String partnersWeight);

	/** 查询优先使用的平台 */
	Platform[] findPreferentialPartnerpayPlatform(ParkingLot lot);

	/** 根据业务员查询停车场列表 */
    Page<ParkingLot> findPage(Pageable pageable, Salesman salesman);

    /** 根据车场用户查询车场列表 */
	Page<ParkingLot> findPageByParkingLotUser(Pageable pageable, ParkingLotUser parkingLotUser);
}
